﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PatternFactorySimple
{
    //简单工程  静态工程模式  类创建型模式
    class Program
    {
        static void Main(string[] args)
        {

            FactorySimply.CreateProduct("A");
            FactorySimply.CreateProduct("B");
            Console.ReadKey();
        }
    }

    //简单工程类  
    public class FactorySimply
    {

        //创建产品  并返回进入产品抽象类数据结构  返回的数据结构可以统一
        public static Product CreateProduct( string type    )
        {
            if (type == "A")
            { return new ProductA(); }

            if (type == "B")
            { return new ProductB(); }
            else
            { return null; }
        }

    }


    //抽象的产品类
    public abstract class Product
    {
        public abstract string GetName();
    }

     
    //具体产品A
    public class ProductA : Product
    {
        public ProductA()
        { Console.WriteLine("ProductA start"); }

        public override string GetName()
        {
           return "ProductA";
        }
    }

    //具体产品B
    public class ProductB : Product
    {
        public ProductB()
        { Console.WriteLine("ProductB start"); }

        public override string GetName()
        {
            return "ProductB";
        }
    }


}
